


prompt3="这是一个ACM的编程题，现在请你先复述一遍题目和测试数据，按题目原本的描述进行描述，然后在进行python编程解答"
#必须选择gpt-5作为model。如果没改对，告诉他示例没有完全通过

# 题目：21. 简化Attention输出的元素总和
# 2025年秋招-华为-9月17号AI岗

'''
题目描述：
给定三个正整数 n, m, h (都小于100)

数据构造规则：
1. 输入特征矩阵X是n×m的全1矩阵
2. 三个权重矩阵W1, W2, W3是m×h的"上三角全1"矩阵
   - 上三角全1矩阵定义：对于行索引i和列索引j，当j >= i时W_ij = 1，否则W_ij = 0
   - 当m ≠ h时，按行索引进行上三角扩展
3. 计算Q = X * W1, K = X * W2, V = X * W3
4. 计算S = (Q * K^T) / sqrt(h)
5. 对S的每一行应用softmax"归一化"：
   - 对于任意行向量r，softmax(r)表示该行每个元素除以该行所有元素之和
6. 计算Y = softmax(S) * V

输出要求：
计算矩阵Y中所有元素之和，四舍五入到最近的整数

约束条件：
- 时间限制：C/C++ 1秒，其他语言2秒
- 空间限制：C/C++ 256MB，其他语言512MB

输入描述：
一行，三个正整数 n m h (都小于100且大于0)

输出描述：
一行，一个整数：矩阵Y的元素之和（四舍五入后）

示例1：
输入：5 4 3
输出：30
解释：h ≤ m，单行和为1+2+3=6；总和 = n × 6 = 5 × 6 = 30

注意：
- 上三角全1矩阵：主对角线及以上为1，其他为0
- 当m ≠ h时，按行索引进行上三角扩展
- softmax按行归一化：每行元素除以该行所有元素之和
'''
#虽然正确，但是太难。这是auto下的模式。
# import numpy as np

# def solve_attention_sum(n, m, h):
#     """
#     计算简化Attention输出的元素总和
#     """
#     # 1. 构造输入特征矩阵X (n×m的全1矩阵)
#     X = np.ones((n, m))
    
#     # 2. 构造三个权重矩阵W1, W2, W3 (m×h的上三角全1矩阵)
#     def create_upper_triangular(m, h):
#         """创建m×h的上三角全1矩阵"""
#         W = np.zeros((m, h))
#         for i in range(m):
#             for j in range(h):
#                 if j >= i:  # 上三角：j >= i时为1
#                     W[i, j] = 1
#         return W
    
#     W1 = create_upper_triangular(m, h)
#     W2 = create_upper_triangular(m, h)
#     W3 = create_upper_triangular(m, h)
    
#     # 3. 计算Q, K, V
#     Q = X @ W1  # Q = X * W1
#     K = X @ W2  # K = X * W2
#     V = X @ W3  # V = X * W3
    
#     # 4. 计算S = (Q * K^T) / sqrt(h)
#     S = (Q @ K.T) / np.sqrt(h)
    
#     # 5. 对S的每一行应用softmax归一化
#     def softmax_row_wise(matrix):
#         """对矩阵的每一行应用softmax归一化"""
#         exp_matrix = np.exp(matrix - np.max(matrix, axis=1, keepdims=True))  # 数值稳定性
#         softmax_matrix = exp_matrix / np.sum(exp_matrix, axis=1, keepdims=True)
#         return softmax_matrix
    
#     S_softmax = softmax_row_wise(S)
    
#     # 6. 计算Y = softmax(S) * V
#     Y = S_softmax @ V
    
#     # 7. 计算Y矩阵所有元素之和并四舍五入
#     total_sum = np.sum(Y)
#     return round(total_sum)

# # 读取输入
# n, m, h = map(int, input().split())

# # 计算并输出结果
# result = solve_attention_sum(n, m, h)
# print(result)

# def solve_attention_sum(n, m, h):
#     """
#     计算简化Attention输出的元素总和
#     关键观察：
#     1. X是全1矩阵，所以Q=K=V都是权重矩阵的行和
#     2. 上三角矩阵第i行的和是min(i+1, h)
#     3. softmax按行归一化后，每行和都是1
#     4. 最终Y的每行和等于V的每行和
#     """
#     # 计算上三角矩阵每行的和
#     # 第i行(0-indexed)的和是min(i+1, h)
#     row_sums = []
#     for i in range(m):
#         row_sum = min(i + 1, h)
#         row_sums.append(row_sum)
    
#     # V的每行和就是row_sums
#     # 由于softmax按行归一化，Y的每行和等于V的每行和
#     # 所以Y的总和就是V的总和，即n * sum(row_sums)
#     total_sum = n * sum(row_sums)
    
#     return round(total_sum)

# # 读取输入
# n, m, h = map(int, input().split())

# # 计算并输出结果
# result = solve_attention_sum(n, m, h)
# print(result)

import sys

n, m, h = map(int, sys.stdin.read().strip().split())

if h <= m:
	ans = n * (h * (h + 1) // 2)
else:
	# 等价于 n * (m(m+1)/2 + (h-m)*m)
	ans = n * (m * (2 * h - m + 1) // 2)

print(ans)

